Fortran For Fun 函数库之HDF5

HDF5(Hierarchica Data Format 5)是一种二进制数据存储文件格式,可以很方便的向文件中添加以及获取数据。HDF5程序库有C语言开发,提供C,C++,python,java,Fortran等语言的API,但提供的Fortran接口不是很好用,所以我在github上与另一人合作开发了一个更高级的API.oo_hdf5_fortran,使用非常简单,方便,功能基本满足要求。

该接口API可以像操作文件一样在程序中操作各种数据,可以很简单的添加group, dataset[0-6d], attribute 等数据,通过以下程序说明。

learn_hdf5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program leran_hdf5
use hdf5_interface
implicit none
type(hdf5_file) :: h5f
integer, parameter :: is = 1, &
iv(*) = [1,2,3,4], &
im(*,*) = reshape([1,2,3,4],[2,2])
real, parameter :: rs = 1.0, &
rv(*) = [1.,2.,3.,4.], &
rm(*,*) = reshape([1.,2.,3.,4.],[2,2])
character(*), parameter :: case = 'test'
!> create new hdf5
call h5f%initialize('test.h5',status='new',action='w')
!> add string
call h5f%add('/case',case)
!> add scalar data
call h5f%add('/scalar/integer',is)
call h5f%add('/scalar/real',rs)
!> add vector data
call h5f%add('/vector/integer',iv)
call h5f%add('/vector/real',rv)
!> add matrix group
call h5f%add('/matrix/')
call h5f%open('/matrix/')
!> add data in group '/matrix/'
call h5f%add('integer',im)
call h5f%add('real',rm)
call h5f%close()
!> add attribute
call h5f%writeattr('/case/','note','this is test file for hdf5 interface')
!>
call h5f%finalize()
end program leran_hdf5

结果

输出的数据文件可以通过hdfview进行查看,可以非常方便的查看各个数据的值,就像在matlab中查看数据值一样方便,实际上matlab的数据存储格式就是hdf5格式。
hdf5_view